// 这是一个使用时间函数来测试当前程序所需运行时间的实例，应用代码首先调用gettimeofday获得当前的时间信息
// 然后讲这些时间信息分门别类地输出，最后测试了本身的执行时间

// 获得秒和微妙时间，显示和Greenwich的时间差，并且测试运行这段程序所需要的时间
//

#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <unistd.h>

int main(void){
	
	// 创建timeval结构体time1、time2,timval结构体用来存放秒(tv_sec)和微秒(tv_used)时间
	struct timeval time1, time2;

	// 创建timezone结构体timez
	// timezone函数用来存放Greenwich时间差和type of DST correction
	// 一定要包含<sys/time.h>头文件，否则没有struct timezone的实现体
	struct timezone timez;

	// 获得当前时间，该函数需要超级用户权限
	// gettimeofday：获取当前时间和时区信息，tz参数用于指向存放返回时间信息的缓冲区
	gettimeofday(&time1,&timez);

	printf("tv_sec: %ld\n",time1.tv_sec);	//打印时间：秒
	printf("tv_usec: %ld\n", time1.tv_usec); //打印时间：微秒

	printf("tz_minuteswest: %d\n", timez.tz_minuteswest);// 打印minutes west of Greenwich
	printf("tz_dsttime: %d\n", timez.tz_dsttime);		// 打印type of DST correction

	// 再次获取当前时间，并与time1的时间比较,计算程序执行时间
	gettimeofday(&time2, &timez);
	printf("time2_usec-time1_use: %ld\n", (time1.tv_usec-time2.tv_usec));
	
	// 计算程序执行时间
	return 0;
}
